package cn.wolfcode.luowowo.member.server;

import cn.wolfcode.luowowo.common.exception.LogistException;
import cn.wolfcode.luowowo.member.domain.UserInfo;
import cn.wolfcode.luowowo.member.domain.UserMessage;

import javax.security.auth.login.LoginException;
import java.util.List;

public interface IUserInfoService {
    
    UserInfo get(Long id);

    boolean checkPhone(String phone);

    void sendVerifyCode(String phone);

    void insert(String verifyCode, String phone, String nickname, String password, String rpassword)throws LogistException, LoginException;

    String userLogin(String username, String password) throws LoginException;

    /**
     * 查看所有用户
     * @return
     */
    List<UserInfo> list();

    /**
     * 修改用户信息
     * @param userInfo
     */
    void update(UserInfo userInfo);

    /**
     * 修改用户密码
     * @param phone
     * @param password
     * @param newpassword
     */
    void updatepassword(String phone, String password, String newpassword ) throws LogistException;

    /**
     * 验证原手机号
     * @param phone
     * @param verifyCode
     */
    void verityOldPhone(String phone, String verifyCode) throws LogistException;

    /**
     * 更新手机号
     * @param phone
     * @param verifyCode
     */
    void updatePhone(Long id ,String phone, String verifyCode) throws LogistException;

    /**
     * 注销账户
     * @param id
     */
    void logout(Long id, int state);

    /**
     * 搜索指定用户名的用户
     * @param name
     * @return
     */
    UserInfo searchUser(String name);

    /**
     * 查询黑名单信息
     * @param id
     * @return
     */
    List<UserInfo> selectbreakUser(Long id) throws LogistException;


    /**
     * 设置黑名单
     */
    void addbreakuser(Long bid, Long uid) throws LogistException;

    /**
     * 查我的金币
     * @param id
     * @return
     */
    Long selectgold(Long id);
    /**
     * 获取用户的访问用户
     * @param vistorIds
     * @return
     */
    List<UserInfo> queryByVistor(Long[] vistorIds);

    /**
     * 获取用户其他信息
     * @param id 用户id
     * @return
     */
    UserMessage getUserMessage(Long id);
}
